
using System;
using System.Collections.Generic;
using System.Linq;

#if UNITY_EDITOR
    using UnityEditor;
#endif
using UnityEngine;

namespace M0
{
    public class Boot : BaseSingleMono<Boot>
    {
        [SerializeField]public string vesion;
        [SerializeField]private bool b打印日志;
        [SerializeField]private List<GameObject> 管理器Obj;
        [SerializeField]public 游戏常用配置 常用配置;

        public int Get货币限制(string 货币)
        {
            int index = 常用配置.货币限制.FindIndex(f => f.货币 == 货币);
            if (index >= 0)
            {
                return 常用配置.货币限制[index].Value;
            }

            return -1;
        }

        private 已注册的模式 cur模式;
        private I平台 小游戏;
        public I平台 Get小游戏 =>小游戏;

        public void Set打印日志(bool b)
        {
            b打印日志 = b;
            BDebug.监听开关日志(b);
        }

        protected override void AwakeInit()
        {
            base.AwakeInit();
            Set打印日志(b打印日志);
            M.Event.SetEvent(M.EventKey_设游戏模式,默认Set模式);
        }

        /// <summary>
        /// 准备都在awake进行
        /// start确认游戏模式 启动游戏
        /// </summary>
        private void Start()
        {
            确认游戏模式();
            StartInit();

            // foreach (var VARIABLE in 管理器Obj)
            // {
            //     VARIABLE.gameObject.SetActive(true);
            // }
            小游戏.启动(启动函数);
        }

        protected virtual void StartInit()
        {
            
        }

        public virtual void 启动函数()
        {
            BDebug.Log("游戏开始=========================");
        }

        private string 默认Set模式()
        {
            return "编辑器开发";
        }
        
        
        private void 确认游戏模式()
        {
            cur模式 = M.Event.DoEvent<已注册的模式>(M.EventKey_设游戏模式);
            switch (cur模式)
            {
                case 已注册的模式.编辑器开发:
                    小游戏 = new 编辑器开发平台();
                    break;
                case 已注册的模式.微信小游戏体验版:
                    小游戏 = new 微信小游戏体验版模式();
                    break;
                case 已注册的模式.微信小游戏:
                    小游戏 = new 微信小游戏模式();
                    break;
                default:
                    小游戏 = new 微信小游戏模式();
                    break;
            }
        }


#if UNITY_EDITOR
        private void OnApplicationQuit()
        {
            M.Event.DoEvent(M.EventKey_游戏结束);
        } 
#endif







        
    }

    [Flags]
    public enum 已注册的模式
    {
        编辑器开发,
        微信小游戏,
        微信小游戏体验版,
    }

    public class 游戏常用配置
    {
        public List<货币数量> 货币限制 = new List<货币数量>();
    }
}

